package com.numericalmethod.algoquant.model.ralph2009;

import java.util.EventListener;

/**
 * 
 * Any class implements this interface can receive status updates 
 * from the portfolio optimizer during the simulation process
 * 
 * @author Paul/Clement/Stephen
 *
 */
public interface Ralph2009OptimizerStatusListener extends EventListener {

	/**
	 * Notify the weight computation at particular time t has been completed.
	 * 
	 * @param timeIndex The time index t that has finished the weight computation.
	 * @param totalNumberOfSteps The total number of steps we need to run.
	 * @param p The portfolio object holding the result so far.
	 */
	public void weightAtTimeIndexComputed(int timeIndex, int totalNumberOfSteps, Ralph2009OptimizedPortfolio p);
	
	
	/**
	 * Notify the number of paths simulated by the optimizer.
	 * @param pathsCompleted The number of paths simulated
	 * @param totalNumberOfPaths The total number of paths that we are going to simulated.
	 */
	public void pathsSimulated(int pathsCompleted, int totalNumberOfPaths);
	
}
